home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / t_os / cw / cw.bas next >
BASIC Source File  |  1993-11-30  |  19KB  |  614 lines

  1. 1000 '##  モールスを覚えちゃおう!     ##
  2. 1010 '##    HI-CCC   製作者: 尋燐・ルナ ##
  3. 1020 '##          V2.04    1993/07/28  ##
  4. 1030 :
  5. 1040 DEFSTR A
  6. 1050 RANDOMIZE TIME
  7. 1060 TEST=0  :'制作用
  8. 1070 SEL=0   :'1 A-Z 0-9  /  0  A-Z
  9. 1080 :
  10. 1090 GOSUB *初期化
  11. 1100 GOSUB *項目設定
  12. 1110 GOSUB *符号セット
  13. 1120 GOSUB *スタータ
  14. 1130 *やり直し
  15. 1140 GOSUB *画面
  16. 1150 GOSUB *BACK
  17. 1160 GOSUB *入力
  18. 1170 GOSUB *WINDO2
  19. 1180 GOSUB *実行
  20. 1190 GOTO  *やり直し
  21. 1200 *終了
  22. 1210 END
  23. 1220 :
  24. 1230 '----SUB----
  25. 1240 *初期化
  26. 1250 SCREEN@ 0  :CLS :PALETTE
  27. 1260 DIM AK(80)  :'見本符号リスト
  28. 1270 DIM AL(200) :'回答符号リスト
  29. 1280 MAX=0       :'
  30. 1290 SPEED=21
  31. 1300 ON KEY( 7) GOSUB *メッセージ
  32. 1310 ON KEY(10) GOSUB *強制終了
  33. 1320 RETURN
  34. 1330 :
  35. 1340 *項目設定
  36. 1350 'ウインド1
  37. 1360 W1C=9        :'##ウインド1の最大項目数
  38. 1370 DIM AW(W1C)  :'##項目名
  39. 1380 DIM SW(W1C)  :'##設定1
  40. 1390 DIM AW1(W1C) :'##設定2
  41. 1400 RESTORE *設定DATA :FOR I=0 TO W1C :READ AW(I),SW(I),AW1(I) :NEXT
  42. 1410 'ウインド2
  43. 1420 DIM AH(W1C+2)   :'##HELPメッセージ
  44. 1430 RESTORE *HDATA :FOR I=0 TO W1C+2 :READ AH(I) :NEXT
  45. 1440 RETURN
  46. 1450 :
  47. 1460 '--------
  48. 1470 *画面
  49. 1480 KEY(7) ON
  50. 1490 SCREEN@ 0 :CLS :WIDTH 80,20
  51. 1500 PALETTE 9,[100,100,120]
  52. 1510 PALETTE 10,[180,180,180]
  53. 1520 PALETTE 11,[0,0,120]
  54. 1530 LINE (0,0)-(639,479),PSET,%9,BF
  55. 1540 SYMBOL (30,10),"モールスを覚えちゃおう!",2,1,6,,,15
  56. 1550 SYMBOL (350,30),"V2.04",1,1,5,,,1,2
  57. 1560 SYMBOL (450,10),"HI-CCC",1,1,4,,,7
  58. 1570 SYMBOL (450,30),"製作者: 尋燐・ルナ",1,1,4,,,1
  59. 1580 LINE (35,40)-(435,40),PSET,%11
  60. 1590 CONNECT (435,5)-(405,60)-(620,60)-(610,50)-(610,70),%11
  61. 1600 GOSUB *WIND1
  62. 1610 X0=400 :Y0=105 :X1=600 :Y1=244 :GOSUB *ウインド
  63. 1620 COLOR 4 :LOCATE 57,4 :PRINT "メッセージ"
  64. 1630 KEY(7) OFF
  65. 1640 RETURN
  66. 1650 :
  67. 1660 *ウインド
  68. 1670 CONNECT (X0,Y1)-(X0,Y0)-(X1,Y0),%10
  69. 1680 CONNECT (X0-1,Y1)-(X0-1,Y0-1)-(X1+1,Y0-1),%10
  70. 1690 CONNECT (X0,Y1)-(X1,Y1)-(X1,Y0),0
  71. 1700 CONNECT (X0-1,Y1+1)-(X1+1,Y1+1)-(X1+1,Y0-1),0
  72. 1710 X0=X0+30 :X1=X0+140 :Y0=Y0-14 :Y1=Y0+24
  73. 1720 LINE (X0,Y0)-(X1,Y1),PSET,%9,BF
  74. 1730 CONNECT (X0,Y1)-(X0,Y0)-(X1,Y0),%10
  75. 1740 CONNECT (X0-1,Y1-12)-(X0-1,Y0+1)-(X1+1,Y0+1),%10
  76. 1750 CONNECT (X0,Y1)-(X1,Y1)-(X1,Y0+1),0
  77. 1760 CONNECT (X1+1,Y1-12)-(X1+1,Y0+1),0
  78. 1770 RETURN
  79. 1780 :
  80. 1790 *WIND1  :'メイン窓
  81. 1800 X0=50 :Y0=82 :X1=350 :Y1=340 :GOSUB *ウインド
  82. 1810 COLOR 4 :LOCATE 13,3 :PRINT AW(0)
  83. 1820 FOR I=1 TO W1C
  84. 1830  X0=60 :Y0=93+I*24 :X1=190 :Y1=90+(I+1)*24
  85. 1840  CONNECT (X0,Y1)-(X0,Y0)-(X1,Y0),%10
  86. 1850  CONNECT (X0,Y1)-(X1,Y1)-(X1,Y0),0
  87. 1860  COLOR 6 :LOCATE 9,4+I :PRINT AW(I);
  88. 1870  IF SW(I)=-2 THEN LOCATE 27,4+I :PRINT SPEED :GOTO 1900
  89. 1880  IF SW(I)<0  THEN LOCATE 27,4+I :PRINT AW1(I); 
  90. 1890  IF SW(I)>=0 THEN LOCATE 25,4+I :PRINT "   する   しない" 
  91. 1900  GOSUB *SW
  92. 1910 NEXT
  93. 1920 RETURN
  94. 1930 :
  95. 1940 *SW
  96. 1950 IF SW(I)>=0 THEN 2040
  97. 1960 IF SW(I)<-2 OR SW(I)>1 THEN RETURN
  98. 1970 IX0=205 :IY0=93+I*24 :IY1=90+(I+1)*24
  99. 1980 IF SW(I)=-1  THEN IX1=IX0+120
  100. 1990 IF SW(I)=-2  THEN IX1=IX0+50
  101. 2000 I0=0 :I1=10
  102. 2010  CONNECT (IX0,IY1)-(IX0,IY0)-(IX1,IY0),%I0 :CONNECT (IX0,IY1)-(IX1,IY1)-(IX1,IY0),%I1
  103. 2020 RETURN
  104. 2030 :
  105. 2040 IX0=210 :IX1=274 :IY0=93+I*24 :IY1=90+(I+1)*24 
  106. 2050 IF SW(I) THEN 2110
  107. 2060  CONNECT (IX1,IY1)-(IX1,IY0)-(IX1+60,IY0),0 
  108. 2070  CONNECT (IX1,IY1)-(IX1+60,IY1)-(IX1+60,IY0),%10
  109. 2080  CONNECT (IX0,IY1)-(IX0,IY0)-(IX0+57,IY0),%9 
  110. 2090  CONNECT (IX0,IY1)-(IX0+57,IY1)-(IX0+57,IY0),%9
  111. 2100  RETURN
  112. 2110 :CONNECT (IX0,IY1)-(IX0,IY0)-(IX0+57,IY0),0 
  113. 2120  CONNECT (IX0,IY1)-(IX0+57,IY1)-(IX0+57,IY0),%10
  114. 2130  CONNECT (IX1,IY1)-(IX1,IY0)-(IX1+60,IY0),%9 
  115. 2140  CONNECT (IX1,IY1)-(IX1+60,IY1)-(IX1+60,IY0),%9
  116. 2150  RETURN
  117. 2160 :
  118. 2170 *設定DATA
  119. 2180 '-3,-2,-1,0,1
  120. 2190 DATA "各 種 設 定"   ,-3,""
  121. 2200 DATA "本番モード"    , 0,""
  122. 2210 DATA "2級試験"      , 0,""
  123. 2220 DATA "スピード"      ,-2,""
  124. 2230 DATA "・速度テスト"   , 0,""
  125. 2240 DATA "・ランダム"     , 0,""
  126. 2250 DATA "・ウエイト"     , 0,""
  127. 2260 DATA "・5文字暗文"   , 0,""
  128. 2270 DATA "・回答同時表示" , 0,""
  129. 2280 DATA "・モールス同時表示" , 0,""
  130. 2290 :
  131. 2300 *WINDO2  :'サブメニュー
  132. 2310 I=0
  133. 2320 GOSUB *W2
  134. 2330 PRINT SPACE$(24)
  135. 2340 A=INPUT$(1)
  136. 2350  IF A="N" OR A="n" THEN *終了
  137. 2360  IF A=CHR$(27) THEN RETURN *やり直し
  138. 2370  IF A="O" OR A="o" THEN GOSUB *OMAKE :RETURN *やり直し
  139. 2380  IF A<>CHR$(13) THEN 2340
  140. 2390 RETURN
  141. 2400 :
  142. 2410 *WIND2
  143. 2420 I=NO
  144. 2430 GOSUB *W2
  145. 2440 PRINT "<'Retキー'で実行・取消>"
  146. 2450 RETURN
  147. 2460 :
  148. 2470 *W2
  149. 2480 COLOR 7
  150. 2490 A=AH(I)+SPACE$(40)
  151. 2500 FOR I0=1 TO 4
  152. 2510  LOCATE 52,4+I0
  153. 2520  PRINT MID$(A,I0*22-21,22)
  154. 2530 NEXT
  155. 2540 COLOR 5 :LOCATE 51,9 
  156. 2550 RETURN
  157. 2560 :
  158. 2570 *HDATA
  159. 2580 DATA "Ret・・・・ 検索を開始するN ・・・・ 終了する      ESC・・・・ 設定をし直す O ・・・・ おまけ"   
  160. 2590 DATA "形式(本番用・練習用)を ←→ で選んでください。"
  161. 2600 DATA "2級は'する'。        3級は'しない'を選んで下さい。練習モードの時は無効です。"
  162. 2610 DATA "スピードを←→で選んでください。数字が小さくなるほど速くなります。"
  163. 2620 DATA "スピードチェックする時は'する'を選択。級を選択後実行する。1分が試験速度。少し速めが良い。"
  164. 2630 DATA "A-Zまでランダムに実行するときは'する'を選択。             "
  165. 2640 DATA "1文字づつウエイトを掛けるときには'する'を選択。                  練習モードの時のみ。"
  166. 2650 DATA "ランダム5文字毎にスペースが入る。                           "
  167. 2660 DATA "モールス信号と同時に回答(英字)も表示する。                      練習モードの時のみ。"
  168. 2670 DATA "モールス信号と同時に回答(モールス記号)も表示する。              練習モードの時のみ。"
  169. 2680 DATA ""
  170. 2690 :
  171. 2700 '-----
  172. 2710 *入力
  173. 2720 NO=1 :ONO=2
  174. 2730 *IN0
  175. 2740  IF NO<1 THEN NO=W1C
  176. 2750  IF NO>W1C THEN NO=1
  177. 2760  GOSUB *WIND2
  178. 2770  LOCATE 9,4+ONO :COLOR 6 :PRINT AW(ONO)
  179. 2780  LOCATE 9,4+NO :COLOR 5 :PRINT AW(NO)
  180. 2790 ONO=NO
  181. 2800 *IN1
  182. 2810 A=INPUT$(1)
  183. 2820  IF A=CHR$(13) THEN RETURN
  184. 2830  IF A=CHR$(&H1F) THEN NO=NO+1 :GOTO *IN0
  185. 2840  IF A=CHR$(&H1E) THEN NO=NO-1 :GOTO *IN0
  186. 2850  IF SW(NO)=-2 THEN *IN3  '##スピード
  187. 2860  IF SW(NO)=-1 THEN *IN4  '##ファイル名
  188. 2870  IF SW(NO)>=0 THEN *IN2  '##設定ON-OFF
  189. 2880 GOTO *IN0
  190. 2890 :
  191. 2900 *IN2
  192. 2910 IF A<>CHR$(&H1C) AND A<>CHR$(&H1D) THEN *IN1 
  193. 2920 SW(NO)=-(SW(NO)=0)
  194. 2930 IF SW(1) THEN SW(4)=0 :SW(5)=1 :SW(6)=0 :SW(8)=0 :SW(9)=0
  195. 2940 IF SW(4) THEN SW(5)=0 :SW(6)=0 :SW(7)=0 :SW(8)=0 :SW(9)=0
  196. 2950 IF SW(7) THEN SW(5)=1 
  197. 2960 FOR I=1 TO W1C :GOSUB *SW :NEXT 
  198. 2970 GOTO *IN1
  199. 2980 *IN3
  200. 2990 SPEED=SPEED+(A=CHR$(&H1C))-(A=CHR$(&H1D))
  201. 3000 IF SPEED<1  THEN SPEED=40 
  202. 3010 IF SPEED>40 THEN SPEED=1
  203. 3020 A0=RIGHT$("  "+STR$(SPEED),3)
  204. 3030 AW1(NO)=A0 :COLOR 6 :LOCATE 27,4+NO :PRINT AW1(NO)
  205. 3040 GOTO *IN1
  206. 3050 *IN4
  207. 3060 IF A<>CHR$(13) AND A<>CHR$(&H1C) THEN *IN1
  208. 3070 COLOR 7 :LOCATE 27,4+NO
  209. 3080 LINE INPUT "",A0
  210. 3090 IF A0="" THEN *IN1
  211. 3100 COLOR 6 :LOCATE 27,4+NO
  212. 3110 IF LEN(A0)>12 THEN A0=LEFT$(A0,12)
  213. 3120 AW1(NO)=A0 :PRINT A0+SPACE$(13)
  214. 3130 GOTO *IN1
  215. 3140 :
  216. 3150 '-----
  217. 3160 *BACK
  218. 3170 IF TEST THEN 3250
  219. 3180 RESTORE 3180
  220. 3190 COLOR 5
  221. 3200   FOR I=1 TO 6
  222. 3210     READ A,A1
  223. 3220     SYMBOL (20,330+I*20),A,2,1,5
  224. 3230     SYMBOL (400,240+I*20),A1,1,1,4
  225. 3240   NEXT
  226. 3250 LINE (536,258)-(552,258),PSET,4
  227. 3260 LINE (487,298)-(503,298),PSET,4
  228. 3270 RETURN
  229. 3280 DATA "A .-    B -...  C -.-.  D -..   E .   "  ,"本文始まり HR HR BT"
  230. 3290 DATA "F ..-.  G --.   H ....  I ..    J .---"  ," .... .-. .... .-. -...-"
  231. 3300 DATA "K -.-   L .-..  M --    N -.    O --- "  ,"通信終了   AR"
  232. 3310 DATA "P .--.  Q --.-  R .-.   S ...   T -   "  ,".-.-."
  233. 3320 DATA "U ..-   V ...-  W .--   X -..-  Y -.--"  ,""
  234. 3330 DATA "Z --.." ,""
  235. 3340 :
  236. 3350 '-------
  237. 3360 *スタータ
  238. 3370 KEY(7) ON
  239. 3380 IF TEST THEN 3490
  240. 3390 FOR I=1 TO 500 :PSET (RND(1)*640,RND(1)*60+420),4 :NEXT  :'庭
  241. 3400 CONNECT (0,150)-(200,80)-(500,190),6  :'山
  242. 3410 CONNECT (370,142)-(500,50)-(639,130),6
  243. 3420 LINE (100,350)-(200,420),PSET,7,B  :'家
  244. 3430 LINE (130,370)-(170,400),PSET,7,B  :'窓
  245. 3440 CIRCLE (150,385),5,7  :'人
  246. 3450 CONNECT (143,400)-(150,390)-(157,400),7
  247. 3460 LINE (146,395)-(140,385),PSET,7
  248. 3470 CONNECT (80,350)-(220,350)-(150,300)-(80,350),7  :'屋根
  249. 3480 LINE (250,220)-(260,420),PSET,7,B  :'柱
  250. 3490 LINE (260,170)-(264,230),PSET,7,B  :'ANT
  251. 3500 LINE (261,120)-(263,170),PSET,7,B
  252. 3510 LINE (262, 70)-(262,120),PSET,7
  253. 3520 CONNECT (242,230)-(262,215)-(282,230),7
  254. 3530 CIRCLE (265,250),5,7  :'コード
  255. 3540 LINE (260,340)-(200,360),PSET,7
  256. 3550 CONNECT (330,100)-(360,95)-(350,105)-(400,100),7  :'電波
  257. 3560 CONNECT (500,80)-(530,75)-(520,85)-(570,80),7
  258. 3570 LOCATE 45,6 :PRINT "CQ"
  259. 3580 LOCATE 66,5 :PRINT "CQ"
  260. 3590 KEY(7) OFF
  261. 3600 IF TEST THEN AT="Q" ELSE AT="CQ CQ DE JG0QKR K"
  262. 3610 GOSUB *コンバート
  263. 3620 SPEED=4
  264. 3630 GOSUB *文字OUT1
  265. 3640 SPEED=21
  266. 3650 RETURN
  267. 3660 :
  268. 3670 '-----
  269. 3680 *実行
  270. 3690 CLS
  271. 3700 AT="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
  272. 3710 IF SEL THEN AT=AT+"1234567890"
  273. 3720 IF SW(1)=0 THEN 3790   :'本番?
  274. 3730   FOR I=1 TO 2 :AT=AT+AT :NEXT
  275. 3740   IF SW(5) THEN GOSUB *混ぜる
  276. 3750   ATS="HR HR < " :ATE=" >"     :'~BT  ~AR 
  277. 3760   IF SW(2) THEN CT=90 ELSE CT=50 
  278. 3770   AT=LEFT$(AT,CT)
  279. 3780  GOTO 3810
  280. 3790 : ATS="" :ATE=""
  281. 3800   IF SW(5) THEN GOSUB *混ぜる
  282. 3810 IF SW(4)=0 THEN 3860          :'テスト
  283. 3820   AT=AT+AT
  284. 3830   IF SW(2) THEN AT=LEFT$(AT+AT,45) ELSE AT=LEFT$(AT,25)
  285. 3840   GOSUB *TEST
  286. 3850   RETURN
  287. 3860 IF SW(7)=0 THEN 3930          :'5文字
  288. 3870   A=AT :I0=LEN(A) :AT=""
  289. 3880   FOR I=1 TO I0
  290. 3890     IF ((I-1) MOD 5)=0 AND I<>1 THEN AT=AT+" " 
  291. 3900     AT=AT+MID$(A,I,1)
  292. 3910   NEXT
  293. 3920  GOTO 4010 
  294. 3930 : IF SW(1)=0 THEN 4010        :'本番 & not5文字
  295. 3940   A=AT :AT="" :I0=0
  296. 3950   FOR I=1 TO LEN(A)
  297. 3960     IF (INT(RND(1)*5)=3 AND I<>1) OR I0=>10 THEN AT=AT+" " :I0=0
  298. 3970     AT=AT+MID$(A,I,1)
  299. 3980     I0=I0+1
  300. 3990   NEXT 
  301. 4000 :
  302. 4010 ANS=AT
  303. 4020 AT=ATS+AT+ATE
  304. 4030 :
  305. 4040 IF TEST THEN PRINT AT
  306. 4050 GOSUB *コンバート
  307. 4060 F=0 :KEY(10) ON  :'強制終了
  308. 4070 COLOR 4 :PRINT "** それでは始めます。 途中'PF KEY10'を押すと中断します。  **"
  309. 4080 COLOR 7 :PRINT "・紙と鉛筆の用意は出来ましたか?"
  310. 4090 IF SW(1)=0 THEN 4130
  311. 4100   COLOR 5 :PRINT "本番と同じ形式です。"
  312. 4110   PRINT "始めの HR HR BT と、終わりの AR は書き取る必要がありません。"
  313. 4120   PRINT "終了後、直ちに鉛筆を置いてください。書き直しの時間はありません。"
  314. 4130 PRINT :COLOR 7
  315. 4140 PRINT "何かキーを押して下さい。2秒後に始まります。"
  316. 4150 WHILE INKEY$<>"" :WEND
  317. 4160 A=INPUT$(1) :PRINT "-Start!!-" :PRINT :WAIT 200
  318. 4170 TIME$="00:00:00"
  319. 4180 IF SW(6) OR SW(8) OR SW(9) THEN GOSUB *文字OUT2 ELSE GOSUB *文字OUT1
  320. 4190 :
  321. 4200 PRINT 
  322. 4210 COLOR 6 :PRINT "- 終了いたしました。-" :COLOR 7
  323. 4220 PRINT "時間 = ";RIGHT$(TIME$,4)
  324. 4230 A=ANS+SPACE$(100)
  325. 4240 PRINT "         0    .    1    .    2    .    3    .    4"
  326. 4250 PRINT "解答 = |";LEFT$(A,40);"|"
  327. 4260 PRINT "        |";MID$(A,41,40);"|"
  328. 4270 PRINT "        |";MID$(A,81,40);"|"
  329. 4280 PRINT "         0    .    1    .    2    .    3    .    4"
  330. 4290 WHILE INKEY$<>"" :WEND :A=INPUT$(1)
  331. 4300 RETURN
  332. 4310 :
  333. 4320 :
  334. 4330 '-----
  335. 4340 *TEST
  336. 4350 COLOR 6 :PRINT "** 只今モールス速度のテスト中!! **"
  337. 4360 COLOR 5 :IF SW(2) THEN PRINT "・2級用 45文字/分" ELSE PRINT "・3級用 25文字/分"
  338. 4370 COLOR 7 :PRINT AT
  339. 4380 GOSUB *コンバート
  340. 4390 TIME$="00:00:00"
  341. 4400 GOSUB *文字OUT1
  342. 4410 COLOR 4 :PRINT "掛かった時間 = ";TIME$
  343. 4420 COLOR 7 :PRINT :PRINT ">丁度1分が試験速度です。"
  344. 4430 PRINT ">機種によってマシン速度が違うので、各自速度を調整してください。"
  345. 4440 PRINT ">最終的には、1分以内の速度で本番用が書き取れれば良いでしょう。"
  346. 4450 PRINT :PRINT "何かキーを押すとメニューに戻ります。"
  347. 4460 WHILE INKEY$<>"" :WEND :A$=INPUT$(1)
  348. 4470 RETURN
  349. 4480 :
  350. 4490 '-------------
  351. 4500 *混ぜる
  352. 4510 FOR I0=1 TO 2
  353. 4520  FOR I=1 TO LEN(AT)
  354. 4530   I0=INT(RND(1)*LEN(AT))+1
  355. 4540   A=MID$(AT,I,1)  :A1=MID$(AT,I0,1)
  356. 4550   MID$(AT,I,1)=A1 :MID$(AT,I0,1)=A
  357. 4560  NEXT
  358. 4570 NEXT
  359. 4580 RETURN
  360. 4590 :
  361. 4600 '-----------
  362. 4610 :
  363. 4620 *コンバート
  364. 4630 MAX=LEN(AT)
  365. 4640   FOR I=1 TO MAX
  366. 4650     A=MID$(AT,I,1)
  367. 4660     AL(I)=AK(INSTR(ACOM,A))
  368. 4670   NEXT
  369. 4680 RETURN
  370. 4690 :
  371. 4700 *文字OUT1  :'ウエイト無し用
  372. 4710  FOR I=1 TO MAX
  373. 4720    FOR I0=1 TO LEN(AL(I))
  374. 4730      A=MID$(AL(I),I0,1)
  375. 4740      IF A="." THEN GOSUB *TEN
  376. 4750      IF A="-" THEN GOSUB *LNG
  377. 4760      IF A=" " THEN GOSUB *区切
  378. 4770      GOSUB *MAT
  379. 4780    NEXT
  380. 4790    GOSUB *SPC
  381. 4800    IF F THEN I=MAX
  382. 4810  NEXT
  383. 4820 RETURN
  384. 4830 :
  385. 4840 *文字OUT2  :'ウエイト有り
  386. 4850  FOR I=1 TO MAX
  387. 4860    A=MID$(ANS,I,1)
  388. 4870    IF A=" " THEN 4900
  389. 4880    IF SW(8) THEN PRINT A;"   "; ELSE PRINT ">   ";
  390. 4890    IF SW(9) THEN PRINT AL(I) ELSE PRINT 
  391. 4900    FOR I0=1 TO LEN(AL(I))
  392. 4910      A=MID$(AL(I),I0,1)
  393. 4920      IF A="." THEN GOSUB *TEN
  394. 4930      IF A="-" THEN GOSUB *LNG
  395. 4940      IF A=" " THEN GOSUB *区切
  396. 4950      GOSUB *MAT
  397. 4960    NEXT
  398. 4970    GOSUB *SPC
  399. 4980    IF SW(6) THEN WHILE INKEY$<>"" :WEND :A=INPUT$(1) :WAIT 100
  400. 4990    IF F THEN I=MAX
  401. 5000  NEXT
  402. 5010 RETURN
  403. 5020 :
  404. 5030 *TEN   :'  .
  405. 5040 BEEP 1
  406. 5050 GOSUB *TIM
  407. 5060 BEEP 0
  408. 5070 RETURN
  409. 5080 :
  410. 5090 *LNG   :'  -
  411. 5100 BEEP 1
  412. 5110 GOSUB *TIM
  413. 5120 GOSUB *TIM
  414. 5130 GOSUB *TIM
  415. 5140 BEEP 0
  416. 5150 RETURN
  417. 5160 :
  418. 5170 *KYU   :' - - 
  419. 5180 BEEP 0
  420. 5190 GOSUB *TIM
  421. 5200 BEEP 0
  422. 5210 RETURN
  423. 5220 :
  424. 5230 *SPC   :'  字と字間   必ず1け休符が入るため3-1=2
  425. 5240 GOSUB *TIM
  426. 5250 *区切  :'  区切り     必ず(*SPC+休符)*2が入るため7-(2+1)*3=1
  427. 5260 *MAT   :'  . と. の間 1
  428. 5270 GOSUB *TIM
  429. 5280 BEEP 0 :BEEP 0
  430. 5290 RETURN
  431. 5300 :
  432. 5310 *TIM  :'スピード調節
  433. 5320 WAIT SPEED
  434. 5330 RETURN
  435. 5340 :
  436. 5350 '----------------------
  437. 5360 *符号セット
  438. 5370 RESTORE 5440
  439. 5380 :I=1
  440. 5390 :READ AK(I)
  441. 5400 :IF AK(I)<>"" THEN I=I+1 :GOTO 5390
  442. 5410 ACOM="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890<> "
  443. 5420 RETURN
  444. 5430 :
  445. 5440 DATA ".-"       :'A
  446. 5450 DATA "-..."     :'B
  447. 5460 DATA "-.-."     :'C
  448. 5470 DATA "-.."      :'D
  449. 5480 DATA "."        :'E
  450. 5490 DATA "..-."     :'F
  451. 5500 DATA "--."      :'G
  452. 5510 DATA "...."     :'H
  453. 5520 DATA ".."       :'I
  454. 5530 DATA ".---"     :'J
  455. 5540 DATA "-.-"      :'K
  456. 5550 DATA ".-.."     :'L
  457. 5560 DATA "--"       :'M
  458. 5570 DATA "-."       :'N
  459. 5580 DATA "---"      :'O
  460. 5590 DATA ".--."     :'P
  461. 5600 DATA "--.-"     :'Q
  462. 5610 DATA ".-."      :'R
  463. 5620 DATA "..."      :'S
  464. 5630 DATA "-"        :'T
  465. 5640 DATA "..-"      :'U
  466. 5650 DATA "...-"     :'V
  467. 5660 DATA ".--"      :'W
  468. 5670 DATA "-..-"     :'X
  469. 5680 DATA "-.--"     :'Y
  470. 5690 DATA "--.."     :'Z
  471. 5700 :
  472. 5710 DATA ".----"    :'1
  473. 5720 DATA "..---"    :'2
  474. 5730 DATA "...--"    :'3
  475. 5740 DATA "....-"    :'4
  476. 5750 DATA "....."    :'5
  477. 5760 DATA "-...."    :'6
  478. 5770 DATA "--..."    :'7
  479. 5780 DATA "---.."    :'8
  480. 5790 DATA "----."    :'9
  481. 5800 DATA "-----"    :'0
  482. 5810 :
  483. 5820 DATA "-...-"    :'<  ~BT
  484. 5830 DATA ".-.-."    :'>  ~AR
  485. 5840 DATA " "        :'   スペース
  486. 5850 :
  487. 5860 DATA ".-.-.-"   :'終点
  488. 5870 DATA "--..--"   :'・小読点
  489. 5880 DATA "---..."   :'..重点又は除法の記号
  490. 5890 DATA "..--.."   :'?
  491. 5900 DATA ".----."   :'・略符
  492. 5910 DATA "-....-"   :'-連続/横線/減算
  493. 5920 DATA "-.--."    :'(
  494. 5930 DATA "-.--.-"   :')
  495. 5940 DATA "-...-"    :'=
  496. 5950 DATA "-..-."    :'/
  497. 5960 DATA ".-.-."    :'+
  498. 5970 DATA "-..-"     :'X
  499. 5980 DATA ".-..-."   :'引用符
  500. 5990 DATA ""         :'
  501. 6000 :
  502. 6010 '--------
  503. 6020 *メッセージ
  504. 6030 BEEP
  505. 6040 RETURN
  506. 6050 :
  507. 6060 '--------
  508. 6070 *強制終了
  509. 6080 KEY(10) OFF
  510. 6090 BEEP 0 :F=1
  511. 6100 RETURN 
  512. 6110 :
  513. 6120 '----------------
  514. 6130 *OMAKE
  515. 6140 CLS :COLOR 4
  516. 6150 PRINT "##  おまけ コーナー  by  尋燐・ルナ    ##"
  517. 6160 COLOR 7 :PRINT 
  518. 6170 PRINT "1..全くモールスを知らない人へ"
  519. 6180 PRINT "2..パソコン上と試験場での違い"
  520. 6190 PRINT "3..練習していく手順"
  521. 6200 PRINT "4..数字も勉強しますか?"
  522. 6210 PRINT "0..戻る"
  523. 6220 PRINT 
  524. 6230 PRINT ">貴方はどれかを選ばなければならない!"
  525. 6240 PRINT ">さあ!どれにするかな?"
  526. 6250 A=INPUT$(1) :I=VAL(A)
  527. 6260  IF I=0 THEN RETURN
  528. 6270  IF I>4 THEN BEEP :COLOR 3 :PRINT ">ま、真面目にやりなさい!  いや。やってください。" :WAIT 300 :GOTO *OMAKE
  529. 6280 :
  530. 6290 ON I GOSUB *MENU1,*MENU2,*MENU3,*MENU4
  531. 6300 GOTO *OMAKE
  532. 6310 *MENU1
  533. 6320 RESTORE 6320 :GOTO *表示
  534. 6330 DATA 4,"1..全くモールスを知らない人へ"
  535. 6340 DATA 7,""
  536. 6350 DATA 7,"・試験には数字や記号は出ませんので(多分:出たらごめん!)"
  537. 6360 DATA 7," とにかく先ず英語A-Zを覚えます。"
  538. 6370 DATA 7,"・最初は簡単な物 :SOS = ...  ---  ...  トトト ツーツーツー トトト"
  539. 6380 DATA 7,"         :ET  = .    -         ト  ツー"
  540. 6390 DATA 7,"                  :HI  = ....   ..      トトトト   トト"
  541. 6400 DATA 7,"・イメージによる :Q = --.-      Y = -.--     X = -..-"
  542. 6410 DATA 7,"                  :Z = --.."
  543. 6420 DATA 7,"・反対      :K = -.-       R = .-."
  544. 6430 DATA 7,"                  :A = .-        N = -."
  545. 6440 DATA 7,"・似た物     :U = ..-       V = ...-"
  546. 6450 DATA 7,""
  547. 6460 DATA 7,"  等各自色々とやってみて下さい。"
  548. 6470 DATA 7,"  .を -より下に打って有るので結構覚えやすいと思います。"
  549. 6480 DATA 7,"  曖昧でもいいので7割り位覚えたら、このソフトを使って見てください。"
  550. 6490 DATA 7,""
  551. 6500 DATA 0,""
  552. 6510 :
  553. 6520 *MENU2
  554. 6530 RESTORE 6530 :GOTO *表示
  555. 6540 DATA 4,"2..パソコン上と試験場での違い"
  556. 6550 DATA 7,""
  557. 6560 DATA 7,"・会場ではかなり音が反響してしまいます。(貴方が思っているより)"
  558. 6570 DATA 7,"  最悪音が二重に聞こえる場所も在ります。"
  559. 6580 DATA 7,"  早く会場に行き、なるべく前の方に座るようにしましょう!"
  560. 6590 DATA 7,"・最初にA-Z迄1回鳴らしますのでその間に雰囲気を掴みます。"
  561. 6600 DATA 7,"・終了後すぐペンを置くように言われます。書き直す時間は有りません。"
  562. 6610 DATA 7,"・間違えは3点減点。減点は10点迄です。"
  563. 6620 DATA 7,"  分からない/怪しい/ついていけない と思ったらすぐその字は抜かしましょう。"
  564. 6630 DATA 7,"  1点減点のみですみます。"
  565. 6640 DATA 7,"・練習の仕上げにバソコンから離れた所で書き取ることをしとくと良いでしょう!"
  566. 6650 DATA 7,"" ,7,""
  567. 6660 DATA 5,"      頑張って下さい。  by 尋燐・ルナ"
  568. 6670 DATA 0,""
  569. 6680 :
  570. 6690 *MENU3
  571. 6700 RESTORE 6700 :GOTO *表示
  572. 6710 DATA 4,"3..練習していく手順
  573. 6720 DATA 7,""
  574. 6730 DATA 7,"・先ずA-Zを5割位とにかく覚えます。紙に書いたりして。"
  575. 6740 DATA 7,"・A-Zを順番にスロースピードで(字を表示しながら)"
  576. 6750 DATA 7,"・8割り位覚えたらランダムにします。"
  577. 6760 DATA 7,"・全部覚えたらもう字を表示させません。"
  578. 6770 DATA 7,"・慣れてきたらいよいよ書き取りします。"
  579. 6780 DATA 7,"・後はスピードを上げたり本番用にしたりいろいろやってみましょう"
  580. 6790 DATA 7,"・仕上げはかなり離れた所にて書き取りします。"
  581. 6800 DATA 7,"" ,7,""
  582. 6810 DATA 5,"      頑張って下さい。  by 尋燐・ルナ"
  583. 6820 DATA 0,""
  584. 6830 :
  585. 6840 *MENU4
  586. 6850 RESTORE 6850 :GOSUB *表示
  587. 6860 DATA 4,"4..数字も勉強しますか?"
  588. 6870 DATA 7,"" 
  589. 6880 DATA 7,"このソフトは英語(A-Z)のみに重点を置いていますが、"
  590. 6890 DATA 7,"  どうしても数字もやりたい方は、'Y'を入力してください。"
  591. 6900 DATA 7,"  プログラム上では、1070行のSEL=0を1にしてください。"
  592. 6910 DATA 7,""
  593. 6920 DATA 6,">>>>"
  594. 6930 DATA 0,""
  595. 6940 :
  596. 6950 COLOR 5
  597. 6960 IF A="Y" OR A="y" THEN SEL=1 :PRINT "数字対応になりました。" ELSE SEL=0 :PRINT "英語のみの表示です。"
  598. 6970 WAIT 150 :COLOR 7
  599. 6980 RETURN
  600. 6990 :
  601. 7000 *表示
  602. 7010 CLS
  603. 7020 READ I,A
  604. 7030   WHILE I>0
  605. 7040     COLOR I
  606. 7050     PRINT A
  607. 7060     IF TEST THEN : ELSE WAIT 50
  608. 7070     READ I,A
  609. 7080   WEND
  610. 7090 A=INPUT$(1)
  611. 7100 RETURN
  612. 7110 :
  613. 7120 '---------------  E  N  D  ---------------------
  614.